import apiClient from './index';

export interface RegisterData {
    username: string;
    password: string;
    nickname: string;
    avatar_url?: string;
    timezone?: string;
}

export interface LoginData {
    username: string;
    password: string;
}

export interface RefreshData {
    refresh: string;
}

export interface changePasswordData { 
    old_password: string;
    new_password: string;
}

/**
 * 注册用户
 * @param userData 包含用户名、密码、昵称等注册信息 
 * @returns 注册响应 
 */
export const registerUser = (userData: RegisterData) => {
    return apiClient.post('/auth/register', userData); // 注册用户接口路径 
};

/**
 * 用户登录，获取 access 和 refresh token 
 * @param userData 包含用户名和密码 
 * @returns 登录响应，包含 access 和 refresh token 
 */
export const loginUser = (userData: LoginData) => {
    return apiClient.post('/auth/login', userData); // 用户登录接口路径 
};

/**
 * 登出用户
 * @param refreshToken 登出时使用的 refresh token 
 * @returns 登出成功消息 
 */
export const logoutUser = (refreshToken: RefreshData) => {
    return apiClient.post('/auth/logout', refreshToken); // 登出用户接口路径 
};

/**
 * 刷新登录许可 (access token)
 * @param refreshToken 用于刷新 access token 的 refresh token 
 * @returns 新的 access 和 refresh token 
 */
export const refreshToken = (refreshToken: RefreshData) => {
    return apiClient.post('/auth/refresh', refreshToken); // 刷新登录许可接口路径 
};

/**
 * 获取当前用户的资料
 * @returns 用户资料，包括用户名、头像URL、昵称、时区 
 */
export const getUserProfile = () => {
    return apiClient.get('/auth/profile'); // 获取用户资料接口路径 
};

export const changePassword = (changePasswordData: changePasswordData) => { 
    return apiClient.post('/auth/change_password', changePasswordData);
};